package park;

import java.text.CollationKey;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

import park.model.SungJuk2VO;

public class J19ArrayList {

	public static void main(String[] args) {

		//ArrayList
		//실무에서 빈번하게 사용되는 컬렉션 객체 중 하나
		//배열과 달리 입력하는 데이터 갯수에 따라 크기가 유동적으로 변함
		//동일한 값을 여러게 저장할 수 있고, 입력되는 값들은 순서를 가짐
		
		//선언 및 정의
		ArrayList<String> woman = new ArrayList<>();
		ArrayList<SungJuk2VO> sj = new ArrayList<>(); //자주 사용하는 패턴 객체를 많이 사용함
		
		//추가하기 add
		woman.add("태희");
		woman.add("혜교");
		woman.add("지현");
		
		sj.add(new SungJuk2VO("태희", 11, 22, 33));
		sj.add(new SungJuk2VO("혜교", 44, 55, 66));
		sj.add(new SungJuk2VO("지현", 77, 88, 99));
		
		
		//하나씩 조회 get
		
		System.out.println(woman.get(0));
		System.out.println(woman.get(1));
		System.out.println(woman.get(2));
		
		//SungJuk2VO의 toString()에 의해 출력
		System.out.println(sj.get(0)); //to_String은 꼭 써줄것 꼮꼮꼮!!
		System.out.println(sj.get(1));
		System.out.println(sj.get(2));
		
		System.out.println(sj.get(0).getName());//SungJuk2VO의 to_String 을 주석 쳤을때 이렇게 사용
		System.out.println(sj.get(1).getName());
		System.out.println(sj.get(2).getName());
		
		//몽땅 출력(for-each문 사용)
		//ArrayList <a>b = new ArrayList<>();
		//for( a ??? : b){}
		//for (요소유형 요소명 : arraylist 객체명)
		for(String str : woman){
			System.out.println(str);
		}
		
		for(SungJuk2VO s : sj ){
			System.out.println(s);
		}
		
		//수정하기 set(위치,값)
		System.out.println(woman.get(1));
		woman.set(1, "수지");
		System.out.println(woman.get(1));
		
		SungJuk2VO newOne = new SungJuk2VO("수정", 78, 32, 45);
		System.out.println(sj.get(2));
		sj.set(2, newOne);
		System.out.println(sj.get(2));
		
		//삭제 remove(위치)
		woman.remove(1);
		sj.remove(2);
		
		for(String str : woman){
			System.out.println(str);
		}
		
		for(SungJuk2VO s : sj){
			System.out.println(s);
		}//데이터를 지웠으므로 2개씩 뜬다
		
		
		//포함여부 확인 contains /indexOf
		String key = "지현";
		/*woman.contains(key);
		if(woman.contains(key)){
			System.out.println("데이터가 존재합니다");
			System.out.println(woman.indexOf(key)); //몇번쨰 위치에 있는지 확인
		}else{
			System.out.println("데이터가 존재하지 않습니다");
		}
		*/
		key = "수지";
		for(SungJuk2VO s : sj){
		if(s.getName().contains(key)){
			System.out.println("찾았어요");
			System.out.println("위치는" + s.getName().indexOf(key));
		}else{
			System.out.println("못 찾았어요");
		}
	}
		
		//정렬 sort
		Collections.sort(woman);
		for(String str : woman){
			System.out.println(str);
		}
		
		//객체를 대상으로 정렬하려면 Comparator라는 인터페이스를 구현하고 
		//Collections.sort(대상,정렬기준); 으로 호출해서 사용해야 함
		//            정렬할 대상
		Collections.sort(sj, new NameSort());
		for(SungJuk2VO s : sj){
			System.out.println(s);
		}
		
	
		//모두 삭제 clear
		woman.clear();
		sj.clear();
		
		for(String str : woman){
			System.out.println(str);
		}
		
		for(SungJuk2VO s : sj){
			System.out.println(s);
		}
		

	}

}





class NameSort implements Comparator<SungJuk2VO>{

	@Override
	public int compare(SungJuk2VO sj1, SungJuk2VO sj2) {
		return sj1.getName().compareTo(sj2.getName());
	}
	
	
	
}

